home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 22 / PC Actual CD 22.iso / linux / xfree86 / DOC / README.cirrus < prev    next >
Encoding:
Text File  |  1998-01-07  |  38.6 KB  |  1,189 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.               Information for Cirrus Chipset Users
  11.  
  12.    Harm Hanemaayer (H.Hanemaayer@inter.nl.net), Randy Hendry (randy@sgi.com)
  13.         (64xx), Corin Anderson (corina@bdc.cirrus.com)
  14.  
  15.                   24 May 1997
  16.  
  17.  
  18.  
  19. 1.  Supported chipsets
  20.  
  21. There are two different SVGA drivers for Cirrus chipsets, one called ``cirrus''
  22. and one called ``cl64xx''.  The ``cirrus'' driver is used in the 256-color SVGA
  23. server (with acceleration) and the mono server (without acceleration). The SVGA
  24. server supports 16, 24, and 32 bits-per-pixel truecolor modes on some configu-
  25. rations.  The ``cl64xx'' driver is used in the 256-color SVGA, 16-color and
  26. mono servers.  Note that except where stated otherwise, this document is refer-
  27. ring to the ``cirrus'' driver.    The following chipsets by Cirrus Logic are sup-
  28. ported:
  29.  
  30.       CL-GD5420
  31.         ISA SVGA chipset, 1Mbyte; maximum dot clock is 45 MHz (256 color
  32.         server). Acceleration with extended write modes (used for scrolling
  33.         and solid filling in this driver). This chipset can not support
  34.         1024x768 non-interlaced in 256 colors.
  35.  
  36.       CL-GD5422
  37.         Enhanced version of the 5420 (32-bit internal memory interface).
  38.         Maximum dot clock is 80 MHz.
  39.  
  40.       CL-GD6205/6215/6225/6235
  41.         Laptop chipsets more or less compatible with the 5420. The only dot
  42.         clock supported is 25 MHz (more on an external display). Some prob-
  43.         lems have been reported with these chipsets (especially on external
  44.         displays). Take note of the "noaccel" option.
  45.  
  46.       CL-GD6420/6440
  47.         These chipsets are not compatible with the 542x series, but are
  48.         supported by the ``cl64xx'' driver. It is used in recent laptops,
  49.         and bears some similarity to old Cirrus chipsets (5410/AVGA2). The
  50.         driver may also work for other 64xx chips. The configuration iden-
  51.         tifiers for this driver are "cl6420" and "cl6440".    This driver is
  52.         discussed in detail in section The cl64xx Driver (section 6., page
  53.         11).
  54.  
  55.       CL-GD5424
  56.         Basically VLB version of the 5422, but resembles the 5426 in some
  57.         respects.
  58.  
  59.       CL-GD5426
  60.         Supports both ISA bus and VLB, and up to 2Mbyte of memory.    Has
  61.         BitBLT engine for improved acceleration (BitBlt, image transfer,
  62.  
  63.  
  64.  Information for Cirrus Chipset Users
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  Information for Cirrus Chipset Users
  71.  
  72.  
  73.  
  74.         text). Dot clock limit is 85 MHz.
  75.  
  76.       CL-GD5428
  77.         Enhanced version of the 5426.
  78.  
  79.       CL-GD5429
  80.         Enhanced version of the 5428; officially supports higher MCLK and
  81.         has memory-mapped I/O.
  82.  
  83.       CL-GD5430
  84.         Similar to 5429, but with 543x core (32-bit host interface).  Does
  85.         not have 64-bit memory mode.
  86.  
  87.       CL-GD5434
  88.         `Alpine' family chip with 64-bit internal memory interface.  The
  89.         chip can only support 64-bit mode if equipped with 2 Mbytes of mem-
  90.         ory; cards with only 1 Mbyte are severely limited.    Supports dot
  91.         clocks up to 110 MHz (later chips support 135 MHz).
  92.  
  93.       CL-GD5436
  94.         Highly optimized 5434.
  95.  
  96.       CL-GD5440
  97.         Similar to the CL-GD5430, and detected as such.
  98.  
  99.       CL-GD5446
  100.         Another member of the Alpine family of 2D accelerators; similar to
  101.         the CL-GD5436.
  102.  
  103.       CL-GD5480
  104.         Newer Alpine family chip that support synchronous graphics RAM
  105.         (SGRAM).
  106.  
  107.       CL-GD5462, CL-GD5464 and CL-GD5465
  108.         The Laguna VisualMedia family of 2D  Accelerators.    These chips use
  109.         Rambus RDRAM memory.  The '62 is a 64-bit 2D accelerator, including
  110.         a BitBlit engine, video windows (not currently used by the server),
  111.         and 64x64 HW cursor.  Mono modes have not been tested. The CL-
  112.         GD5464 is the next chip in the Laguna family, and the CL-GD5465 is
  113.         the latest member, both have been tested.
  114.  
  115.       CL-GD7541/7542/7543/7548
  116.         Laptop chipsets more or less compatible with the 5428/3x.  While
  117.         has it been tested on some configurations, not all configuration
  118.         may work correctly.
  119.  
  120.       CL-GD7555
  121.         Limited untested support, without auto-detection, has been provided
  122.         for this chip which is a 64-bit extension of the 754x family. Use a
  123.         Chipset "clgd7555" line.
  124.  
  125. Here's a list of maximum dot clocks for each supported depth:
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  Information for Cirrus Chipset Users
  137.  
  138.  
  139.  
  140.               mono       8 bpp (256c) 16 bpp         24 bpp      32 bpp
  141.       CL-GD62x5      45 MHz   45 MHz
  142.       CL-GD5420      80 MHz   45 MHz (1)
  143.       CL-GD542x/512K  80 MHz   45 MHz
  144.       CL-GD5422/24      80 MHz   80 MHz    40 MHz         27 MHz
  145.       CL-GD5426/28      85 MHz   85 MHz    45 MHz (2)   28 MHz
  146.       CL-GD5429      85 MHz   85 MHz    50 MHz         28 MHz
  147.       CL-GD5430      85 MHz   85 MHz    45 MHz (2)   28 MHz
  148.       CL-GD5434/1Mb   85 MHz   85 MHz    42 MHz         28 MHz
  149.       CL-GD5434/2Mb   85 MHz   110/135 MHz    85 MHz         28 MHz      45/50 MHz (2)
  150.       CL-GD5436/1Mb  85 MHz     110 MHz (3)  60 MHz (3)   40 MHz (3)
  151.       CL-GD5436/2Mb  85 MHz     135 MHz     85 MHz       85 MHz (3)   60 MHz (3)
  152.       CL-GD5446/1Mb  85 MHz     110 MHz (3)  60 MHz (3)   40 MHz (3)
  153.       CL-GD5446/2Mb  85 MHz     135 MHz     85 MHz       85 MHz (3)   60 MHz (3)
  154.       CL-GD5462 170 MHz  170 Mhz      170 MHz      170 MHz        135 MHz
  155.       CL-GD5464/65     170 MHz  230 Mhz      170 MHz        170 MHz     135 MHz
  156.       CL-GD5480 85 MHz     200 MHz        100 MHz     100 MHz      50 MHz
  157.       CL-GD754x 80 MHz   80 MHz      40 MHz (4)   (5)
  158.  
  159.       (1) with 512K memory.
  160.       (2) 50 MHz with high MCLK setting.
  161.       (3) Depends on memory clock.
  162.       (4) This may be too low for some chips.
  163.       (5) This depth may actually work if it is enabled and tested.
  164.  
  165.  
  166. Rough virtual/physical screen resolution limits for different amounts of video
  167. memory:
  168.  
  169.  
  170.               mono      8 bpp        16 bpp      24 bpp     32 bpp
  171.       256K          800x600      640x400
  172.       512K          1152x900      800x600     640x400
  173.       1024K       1600x1200   1152x900    800x600      680x510
  174.       2048K       2304x1728   1600x1200   1152x900      960x720    800x600
  175.       4096K       2304x1728   2272x1704   1600x1200   1360x1020  1152x900
  176.  
  177.  
  178. For 546x chips, the above table isn't quite accurate.  While the virtual width
  179. may be any size, the screen pitch will be rounded up to the nearest value in
  180. the table below.  Thus, each line on the screen will take more video memory
  181. than just what is displayed.  To maximize video memory, then, choose the vir-
  182. tual desktop width from the table of pixel widths below:
  183.  
  184.  
  185.       8bpp:     640, 1024, 1280, 1664, 2048, 2560, 3328, 4096, 5120, 6656
  186.       16bpp:    320,  512,    640,  832, 1024, 1280, 1664, 2048, 2560, 3328
  187.       24bpp:    640, 1024, 1280, 1664, 2048, 2560, 3328, 4096, 5120, 6656
  188.       32bpp:    160,  256,    320,  416,  512,  640,    832, 1024, 1280, 1664
  189.  
  190.  
  191. For other Cirrus chips, it's advisable to have a virtual width that is a multi-
  192. ple of 32 if acceleration is used.  The horizontal monitor timings must be
  193. below 2048.
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.  Information for Cirrus Chipset Users
  203.  
  204.  
  205.  
  206. To run XF86_SVGA at a higher color depth, pass options to the X server as fol-
  207. lows:
  208.  
  209.      startx -- -bpp 16          5-6-5 RGB ('64K color', XGA)
  210.      startx -- -bpp 16 -weight 555 5-5-5 RGB ('Hicolor') (not on 5462)
  211.      startx -- -bpp 24          8-8-8 RGB truecolor
  212.      startx -- -bpp 32          8-8-8 XRGB truecolor (543X/46/6X only)
  213.  
  214.  
  215. 2.  Basic configuration
  216.  
  217. It is recommended that you generate an XF86Config file using the `XF86Setup' or
  218. `xf86config' program, which should produce a working high-resolution 8bpp con-
  219. figuration. You may want to include mode timings in the Monitor section that
  220. better fit your monitor (e.g 1152x900 modes). The driver options are described
  221. in detail in the next section; here the basic options are hinted at.
  222.  
  223. For all chipsets, a Clockchip "cirrus" line in the Device section can be use-
  224. ful. This allows the use of any dot clocks, instead of one out of the fixed set
  225. of dot clocks supported by the driver. This is required if you want a 12.6 MHz
  226. dot clock for low-resolution modes. However, when this option used, clock fre-
  227. quencies be unstable leading to strange effects, so only use it if absolutely
  228. required.
  229.  
  230. For any chip with a BitBLT engine, the new XAA (XFree86 Acceleration Architec-
  231. ture) is used. This code is new and still in a beta stage.  If graphics redraw-
  232. ing goes wrong, try the "noaccel" option; if it is using memory-mapped I/O,
  233. "no_mmio" might be sufficient.
  234.  
  235. In order to be able to run at a depth of 16bpp, 24bpp, or 32bpp, and to improve
  236. performance at 8bpp, linear addressing must be enabled. This is generally
  237.  
  238. In order to be able to run at a depth of 16bpp, 24bpp or 32bpp, and to improve
  239. performance at 8bpp, linear addressing must be enabled. Linear addressing is
  240. the default mode of operation on any PCI-bus configuration; use "nolinear" to
  241. disable it.  For other bus types, it is generally possible on 543x local bus
  242. cards, and if you have less than 16Mb of system memory, on local bus 542x cards
  243. and ISA 543x cards. You must specify the "linear" option and possibly a Membase
  244. address. See the following sections for a detailed description.
  245.  
  246. Memory-mapped I/O is the default mode of operation for any Alpine family chip.
  247. For the 5429, the "mmio" option may be used to enable it, but it has not been
  248. tested.
  249.  
  250. Finally, if you have 546X chip, it will be on the PCI bus.  As such, there is
  251. no problem about memory mapped I/O or linear frame buffer address spaces run-
  252. ning into system memory.  The PCI spaces are mapped way up near the 4GB point.
  253. Because the mmio and linear frame buffer don't conflict at all on the system,
  254. the "linear", Membase, and "mmio" options are ignored (memory mapped I/O  and
  255. linear addressing are always used).
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  Information for Cirrus Chipset Users
  269.  
  270.  
  271.  
  272. 3.  XF86Config options
  273.  
  274. Don't use the `Clocks' command. The clocks are fixed (i.e. not probed), and
  275. there should be no variation between cards (other than the maximum supported
  276. clock for each chipset).
  277.  
  278. The following options are of particular interest to the Cirrus driver. Each of
  279. them must be specified in the `svga' driver section of the XF86Config file,
  280. within the Screen subsections of the depths to which they are applicable (you
  281. can enable options for all depths by specifying them in the Device section).
  282.  
  283.       Option "noaccel"
  284.         This option will disable the use of any accelerated functions. This
  285.         is likely to help with problems related to bugs in acceleration
  286.         functions, and perhaps high dot clocks and DRAM timing, at the cost
  287.         of performance (which will still be reasonable on a local bus).
  288.  
  289.       Option "fast_dram" "med_dram" "slow_dram" (5424/6/8/9, 543x, 5446)
  290.         These options set the internal memory clock (MCLK) register to
  291.         another value. The default value programmed by the BIOS is usually
  292.         OK, don't mess with these options unless absolutely required.
  293.  
  294.         The "fast_dram" option will cause the driver to set the internal
  295.         memory clock (MCLK) register of the video card to a higher value
  296.         (recent chips use an even higher value by default).  Normally, this
  297.         register is not touched but it appears that the standard CL-GD542x
  298.         BIOS initializes it to a value that is somewhat on the low side
  299.         (limited by the chip specification), which has a negative influence
  300.         on performance of high dot clock modes. This is especially true if
  301.         extended RAS timing is being used (this is indicated in the server
  302.         probe).  The actual speed of DRAM is not a critical factor in the
  303.         determining whether   this option is appropriate; one CL-
  304.         GD5426-based card with 80ns DRAM using Extended RAS timing, which
  305.         came with a DOS driver utility to set the MCLK to this value
  306.         (0x22), seems to run stable at higher MCLK.
  307.  
  308.         There are also (mainly brand name) cards whose customized BIOS does
  309.         initialize to a higher non-standard value.
  310.  
  311.         The "slow_dram" option will set the MCLK to the value used by the
  312.         standard CL-GD542x BIOS (0x1c). Symptoms of a MCLK that is too high
  313.         can be vertical bands of flickering pixels on the screen, erroneous
  314.         pixels appearing in text, and loosing pixels in the textmode font
  315.         after running X (note that very similar effects can be caused by an
  316.         MCLK setting that is too low).
  317.  
  318.         Upon start-up, the driver will report the value of the MCLK regis-
  319.         ter (check this first), and also any changes that are made.
  320.  
  321.         Typical MCLK values:
  322.  
  323.           0x1c (50 MHz)
  324.             This is usually the BIOS default.  It is forced by the
  325.             "slow_dram" option.
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  Information for Cirrus Chipset Users
  335.  
  336.  
  337.  
  338.           0x1f (55 MHz)
  339.             Value used by the "med_dram" option.  Highest value
  340.             that 542x based cards seem to be able to handle with
  341.             linear addressing enabled.
  342.  
  343.           0x22 (60 MHz)
  344.             Value that most (Extended RAS) 542x cards seem to be
  345.             able to handle, used by     the "fast_dram" option.
  346.  
  347.         The official maximum of the 542x chips is 50 MHz.  The official
  348.         spec. for the 5434 is also 50 MHz (0x1c) and that for the 5429 and
  349.         5430 is probably 60 MHz (0x22). Current revisions of the 5434 (E
  350.         and greater) support 60 MHz MCLK in graphics modes, and the driver
  351.         will program this automatically. If it causes problems, use the
  352.         "slow_dram" option.
  353.  
  354.         The driver takes the MCLK into account for clock limits that are
  355.         determined by DRAM bandwidth.
  356.  
  357.         If you are not having any problems (performance or stability at
  358.         high dot clocks), it is best not to use any of the DRAM options.
  359.  
  360.       Option "no_bitblt"
  361.         This option, when used with a 5426/28/29/3x/46/6x/754x, will have
  362.         the effect of disabling the use of the BitBLT engine (which the
  363.         5424 does not have), while retaining some acceleration. This will
  364.         be useful for problems related to functions that use the BitBLT
  365.         engine.  Performance is significantly decreased.
  366.  
  367.       Option "no_imageblt"
  368.         This option is now obsolete. The "xaa_no_col_exp" option has a
  369.         somewhat similar effect.
  370.  
  371.       chipset "clgd54xx"
  372.         Force detection of the given chipset. Useful if you have a sup-
  373.         ported chipset that is not properly detected, or if you have an
  374.         unsupported chip that might be compatible with a supported one.
  375.  
  376.       videoram 1024 (or another value)
  377.         This option will override the detected amount of video memory, and
  378.         pretend the given amount of memory is present on the card. This is
  379.         useful on cards with 2Mbyte of memory whose DRAM configuration is
  380.         not compatible with the way the driver enables the upper megabyte
  381.         of memory, or if the memory detection goes wrong. It must be speci-
  382.         fied in the Device section.
  383.  
  384.       Option "fifo_conservative" (5424/6/8/9/3x/46/6x/754x)
  385.         This option will set the CRT FIFO threshold to a conservative value
  386.         for high dot clocks (>= 65 MHz), reducing performance but hopefully
  387.         alleviating problems with what can be described as flashing
  388.         `streaks', `jitter' or horizontally repeated display areas on the
  389.         screen (especially when   a BitBLT operation is in progress, e.g.
  390.         scrolling).
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  Information for Cirrus Chipset Users
  401.  
  402.  
  403.  
  404.       Option "fifo_aggressive" (5424/6/8/9/3x/46/6x/754x)
  405.         This option will set the CRT FIFO threshold to an aggressive value;
  406.         it will be the same as that used for lower dot clocks.  Theoreti-
  407.         cally it improves performance at high dot clocks, but it does not
  408.         help in the vast majority of cases.
  409.  
  410.       Option "no_2mb_banksel" (542x)
  411.         This option will cause the driver not to set the `DRAM bank select'
  412.         bit to enable the upper megabyte of memory on a 2Mbyte card. This
  413.         should be helpful with cards equipped with 512Kx8 DRAMs, as opposed
  414.         to 256Kx4/16 DRAMs, when using a virtual screen configuration that
  415.         uses more than 1Mbyte of memory.
  416.  
  417.       Option "probe_clocks"
  418.         This option will force probing of dot clocks on the card. This
  419.         should not be necessary, since the clocks are fixed and the same
  420.         for all Cirrus chipsets.
  421.  
  422.       Clockchip "cirrus"
  423.         This enables programmable clocks. It must be specified in the
  424.         Device section. With this option, the clocks the modes use will be
  425.         automatically selected. Do not specify any Clocks line. This option
  426.         makes a 12.5 MHz clock possible for a 320x200 Doublescan mode. Note
  427.         that some frequencies may be unstable (resulting in a `wavy'
  428.         screen). Only tried and tested frequencies (like the default
  429.         clocks) are guaranteed to be stable.
  430.  
  431.       Option "linear"  (542x/6/8/9/3x/754x on VL-bus)
  432.         This enables linear addressing, which is the mapping of the entire
  433.         framebuffer to a high address beyond system memory, so that SVGA
  434.         bank switching is not necessary. It enhances performance at 256
  435.         colors, and is currently required for 16bpp, 24bpp, and 32bpp. See
  436.         section 4 for details.
  437.  
  438.       Option "nolinear"  (542x/6/8/9/3x/754x on PCI bus)
  439.         Linear addressing is the default mode of operation on any PCI-bus
  440.         chip. For these configurations, this option disables linear
  441.         addressing.
  442.  
  443.       Membase 0x00e00000 (or a different address) (542x/6/8/9/3x/46/754x)
  444.         This sets the physical memory base address of the linear frame-
  445.         buffer. It must be specified in the Device section. It is required
  446.         for non-PCI linear addressing configurations.
  447.  
  448.       Option "favour_bitblt" (5426 only)
  449.         This option is now obsolete.
  450.  
  451.       Option "mmio" (5429, 7548)
  452.         This enables the use of memory-mapped I/O to talk to the BitBLT
  453.         engine on the 543x/5429, which is a bit faster. This is option has
  454.         no effect when not using the BitBLT engine (e.g. when using
  455.         "no_bitblt").
  456.  
  457.  
  458.  
  459.  
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.  Information for Cirrus Chipset Users
  467.  
  468.  
  469.  
  470.       Option "no_mmio" (543x/4x)
  471.         This disables the use of memory-mapped I/O to talk to the BitBLT
  472.         engine on any chip for which it is the default mode of operation.
  473.  
  474.       Option "sw_cursor" (542x/3x/46)
  475.         This disables use of the hardware cursor provided by the chip. Try
  476.         this if the cursor seems to have problems. In particular, use this
  477.         when using dot clocks greater than 85 MHz on the 5434/6 since those
  478.         chips don't fully support the hardware cursor at those clocks.
  479.  
  480.       Option "clgd6225_lcd"
  481.         Provides a work-around for problems on the LCD screen of some 62x5
  482.         laptop chipsets with maximum white colors.
  483.  
  484.       Option "no_pixmap_cache"
  485.         When XAA is used (on any BitBLT chip), this option disables the use
  486.         of a pixmap cache in XAA. It could help with certain drawing bugs.
  487.  
  488.       Option "xaa_no_col_exp"
  489.         When XAA is used, this option disables the use of hardware color
  490.         expansion features by XAA. Again, this might help with certain
  491.         drawing bugs.
  492.  
  493.       Option "no_stretch" (754x)
  494.         Disable automatic stretching (horizontal and vertical expansion) of
  495.         640x480 on a 800x600 LCD.
  496.  
  497.  
  498. 4.  Mode issues
  499.  
  500. The accelerated 256-color driver uses 16K bytes of scratch space in video mem-
  501. ory, and the hardware cursor also uses 1K (2K on the '6X). Consequently, a
  502. 1024x1024 virtual resolution should not be used with a 1Mbyte card.
  503.  
  504. On older chips, the use of a higher dot clock frequencies has a negative effect
  505. on the performance of graphics operations, especially BitBlt, when little video
  506. memory bandwidth is left for drawing (the amount is displayed during start-up
  507. for 542x/3x/46 chips).    For the 542x/3x chips, with default MCLK setting (0x1c)
  508. and a 32-bit memory interface, performance with a 65 MHz dot clock can be half
  509. of that with a dot clock of 25 MHz.  So if you are short on memory bandwidth
  510. and experience blitting slowness, try using the lowest dot clock that is
  511. acceptable; for example, on a 14" or 15" screen 800x600 with high refresh (50
  512. MHz dot clock) is not so bad, with a large virtual screen.
  513.  
  514. 5434-based cards with 2Mbyte of memory do much better at high dot clocks; the
  515. DRAM bandwidth is basically double that of the 542x series. The 543x chips also
  516. make more efficient use of the available DRAM bandwidth. The same goes for the
  517. 544x.
  518.  
  519.  
  520. 5.  Linear addressing and 16bpp/24bpp/32bpp modes
  521.  
  522. Currently the framebuffer code 16-bit, 24-bit, and 32-bit pixels  in the SVGA
  523. server requires linear addressing. (This restriction may be removed in a future
  524.  
  525.  
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.  Information for Cirrus Chipset Users
  533.  
  534.  
  535.  
  536. version, but with nearly all new cards using the PCI bus (where linear address-
  537. ing poses no problem), removing the linear addressing requirement presently has
  538. a lower priority than other features.)    Option "linear" can be specified in a
  539. depth-specific screen section to enable linear addressing; a MemBase setting
  540. (in the device section) is probably also required (although they are both auto-
  541. matically selected with PCI cards, like 5446, 546x, and some 543x based cards).
  542. There are a number of different card configurations.
  543.  
  544. If you have a 542x/543x on the ISA bus, and you have 16Mb or more of system
  545. memory, linear addressing is impossible. 16bpp is out, sorry.  If you have less
  546. than 14Mb of memory, you may be able to map the framebuffer at 14Mb, using
  547. `MemBase 0x00e00000'. That's five zeros after the `e'. Unfortunately many ISA
  548. cards don't support linear addressing.
  549.  
  550. If you have a 5424/26/28/29 on VESA local bus, the situation is more compli-
  551. cated. There are two different types of cards w.r.t. linear addressing:
  552.  
  553.    o Cards that can only map in the lower 16Mb, like cards on the ISA bus.
  554.      This is the case with most cards. The same restrictions apply (i.e. you
  555.      must have less than 16Mb of memory).
  556.  
  557.    o Cards that connect address line A26 and always map at 64Mb + 14Mb or 64Mb.
  558.      In this case specify `MemBase 0x04e00000' or `MemBase 0x04000000'. This
  559.      assumes you have a VLB motherboard implementation that implements A26.
  560.      Alternatively the card may map to 0x2000000, and recent cards like the
  561.      5429 usually map to 0x03e00000 (62Mb).
  562.  
  563. You will probably have to rely on trial and error. If you have less than 16Mb
  564. memory, the `wrong' membase setting will result in no graphics being displayed,
  565. but you can probably exit with ctrl-alt-backspace.
  566.  
  567. If you have >= 16Mb memory, the first type of card (and even the second type
  568. with a stupid VLB motherboard) will result in a crash (probably a spontaneous
  569. hard reboot).
  570.  
  571. It may be possible to find out the type by visual inspection. If the card has a
  572. pin at A26, it is likely to map beyond 64Mb. To do this, take the card out. At
  573. the VESA local bus pins (this is the smaller strip of connector pins at the
  574. non-slot side of the card), consider the right side (this is the side of the
  575. board where all the chips are mounted). There are 45 pins here. They are num-
  576. bered 1 to 45, from the inside (i.e. the one nearest to the card end is 45).
  577. Counting from the inside, the 17th pin is probably not present, then there are
  578. pins at 18-20. The 21st is A30, the 22nd is A28 and the 23rd is A26. So, if we
  579. have no pins at at 21-23, the card doesn't map beyond 64Mb. If there's only a
  580. gap of two pins at 21 and 22 (or they are both present) and there's a pin at
  581. 23, the card does probably map beyond 64Mb. If there's a little logic near that
  582. pin on the card, it's more likely.
  583.  
  584. With a 543x on the local bus things are simpler (the Cirrus Logic windows
  585. drivers use it), but it is not quite without problems.
  586.  
  587. With a card on the PCI bus, there is a PCI configuration register that holds
  588. the framebuffer base address, which is read automatically by the driver if a
  589. PCI card is detected. The `scanpci' program can read out the PCI configuration
  590.  
  591.  
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.  Information for Cirrus Chipset Users
  599.  
  600.  
  601.  
  602. and show the base address.
  603.  
  604. On the VESA local bus, most 543x cards have a default mapping address of 64Mb,
  605. with jumper options for 2048Mb and 32Mb. This is probably described in the doc-
  606. umentation that came with the card, or look in the MS-Windows system.ini file
  607. (something with linearaddr = <offset in megabytes>). These different settings
  608. were added by Cirrus Logic after finding that many VLB motherboard implementa-
  609. tions don't implement different address pins. The driver assumes a default of
  610. 64Mb if MemBase isn't specified. A few examples for MemBase:
  611.  
  612.       MemBase   0x02000000       32Mb
  613.       MemBase   0x04000000       64Mb
  614.       MemBase   0x80000000       2048Mb
  615.  
  616. Finally, for 546X cards, you are in luck:  there are no "issues" to worry
  617. about.    The '6X will always use linear addressing and memory-mapped I/O, and
  618. will use the memory addresses up near 4GB.  Yay for PCI!
  619.  
  620. The 16bpp and 32bpp modes are now fully accelerated, thanks to XAA. On more
  621. recent chips like the 5436/46 and the 546X, 24bpp is also fully accelerated.
  622. So although there are now 4 up to times as many bits to display, the X server
  623. shouldn't feel overly sluggish.  Note also that the 24bpp and 32bpp modes are
  624. only supported on a limited set of cards, and with at least 2Mb of memory.
  625.  
  626. In the XF86Config "Screen" section, a "Display" subsection must be defined for
  627. each depth that you want to run, with separate Modes and virtual screen size.
  628. Example (2Mb of video memory):
  629.  
  630.      Section "screen"
  631.      SubSection "Display"
  632.       Depth 8
  633.       Virtual 1280 1024
  634.       ViewPort 0 0
  635.       Modes "640x480" "800x600" "1024x768"
  636.       Option "linear"
  637.      EndSubSection
  638.      SubSection "Display"
  639.       Depth 16
  640.       Virtual 1024 992
  641.       ViewPort 0 0
  642.       Modes "640x480" "800x600" "1024x768"
  643.       Option "linear"
  644.      EndSubSection
  645.      SubSection "Display"
  646.       Depth 32
  647.       Virtual 832 600
  648.       ViewPort 0 0
  649.       Modes "640x480" "800x600"
  650.       Option "linear"
  651.      EndSubSection
  652.      EndSection
  653.  
  654.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  Information for Cirrus Chipset Users
  665.  
  666.  
  667.  
  668. 6.  The ``cl64xx'' Driver
  669.  
  670. The cl64xx driver supports the cl-gd6440 found in many laptops.  For example,
  671. Nan Tan Computer's NP9200, NP3600, etc., which are OEM-ed by Sager, ProStar,
  672. etc. and Texas Instruments TI4000 series are supported.
  673.  
  674. The driver works in LCD-only, CRT-only, and the chip's SimulScan mode which
  675. allows one to use both the LCD and external CRT displays simultaneously.  The
  676. LCD and Simulscan modes' resolution is 640x480 while, for CRT-only, the stan-
  677. dard VESA modes of 640x480, 600x800, and 1024x768 have been tested.  Interlaced
  678. 1024x768 mode has never been debugged and does not work on the machines tested.
  679.  
  680. The chip has a documented maximum operating limit for its dot clock that is
  681. related to its core voltage.  Specifically, for 5.0V the maximum dot clock is
  682. 65MHz and for 3.3V the maximum dot clock is 40MHz.  The driver checks the core
  683. voltage and limits the maximum dot clock to the corresponding value.  This
  684. translates to a maximum resolution of about 1024x768 at a 60Hz refresh rate.
  685. The internal frequency generator can be programmed higher than these limits and
  686. is done so during server startup when the clocks are probed which momentarily
  687. exceeding the chip's operating limit.  Once a set of valid clocks is obtained,
  688. I would recommend using Clocks lines in XF86Config.  Doing so will also
  689. decrease startup time significantly.  The clocks may be obtained by running the
  690. X server -probeonly (see the XFree86 man page for more information about
  691. -probeonly).
  692.  
  693. The data book indicates that only a configuration of one megabyte of video mem-
  694. ory is supported by the chip.  This size has been directly set in the driver.
  695. If one finds a need, one should be able to override the default size in
  696. XF86Config.  Also, with 1MB of video memory, one should be able to have a vir-
  697. tual screen size of e.g. 1024x1024 and this is possible in CRT-only screen
  698. mode.  However, whenever the LCD is in use (LCD and SimulScan), the chip uses a
  699. portion of upper video ram for its own internal acceleration purposes.    Thus,
  700. the maximum video memory available for virtual resolution in LCD modes is about
  701. 0.75MB e.g.  1024x768.    If you set the virtual resolution above this, you will
  702. see what might be described as a compressed aliased band when the accelerated
  703. area is displayed.
  704.  
  705. Currently, the driver does not support switching of screen modes among LCD,
  706. CRT, and SimulScan, and, at least on the NP9200, the mode must be chosen at OS
  707. boot time (e.g. Linux's LILO) while the BIOS is still active.  It should be
  708. possible to add screen mode type selection as a ModeLine flag option in
  709. XF86Config to allow for dynamic screen mode selection from within the X server.
  710. Finally, the driver does not currently support any of the powerdown saving fea-
  711. tures of the chip nor does it shut off the LCD's backlight on screen blank.  I
  712. hope to implement all these features in future releases.
  713.  
  714. Some notes regarding the CL-GD6420:
  715.  
  716. The amount of video memory may not always be detected correctly. The driver
  717. source code includes two methods, one defined out. Better specify the amount of
  718. video memory with a VideoRam line in the Device section. Use the standard
  719. 640x480 60 Hz standard mode timing with 25.175 MHz dot clock for CRT or
  720. SIMulscan mode; for LCD-only operation, use the same mode timing but with a dot
  721. clock of 16.257 MHz. Standard 56 Hz 800x600 is also supported on the CRT.
  722.  
  723.  
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.  Information for Cirrus Chipset Users
  731.  
  732.  
  733.  
  734. The primary contact for the cl6440 problems with ``cl64xx'' driver is Randy
  735. Hendry <randy@sgi.com>.
  736.  
  737.  
  738. 7.  Trouble shooting with the ``cirrus'' driver
  739.  
  740. First of all, make sure that the default modes selected from your XF86Config is
  741. supported by your monitor, i.e. make sure the horizontal sync limit is correct.
  742. It is best to start with standard 640x480x256 with a 25.175 MHz clock (by spec-
  743. ifying a single horizontal sync of 31.5) to make sure the driver works on your
  744. configuration. The default mode used will always be the first mode listed in
  745. the modes line, with the highest dot clock listed for that resolution in the
  746. timing section.
  747.  
  748. Note that some VESA standard mode timings may give problems on some monitors
  749. (try increasing the horizontal sync pulse, i.e. the difference between the mid-
  750. dle two horizontal timing values, or try multiples of 16 or 32 for all of the
  751. horizontal timing parameters).
  752.  
  753.       There is a video signal, but the screen doesn't sync.
  754.         You are using a mode that your monitor cannot handle. If it is a
  755.         non-standard mode, maybe you need to tweak the timings a bit. If it
  756.         is a standard mode and frequency that your monitor should be able
  757.         to handle, try to find different timings for a similar mode and
  758.         frequency combination.
  759.  
  760.       Horizontal jitter at high dot clocks.
  761.         This problem shows especially when drawing operations such as
  762.         scrolling are in progress.    If you're using a 542x/3x/46/6x/754x,
  763.         try the "fifo_conservative" option. Failing that, you can try the
  764.         "fast_dram" option, or use a lower dot clock.  If that is not suf-
  765.         ficient, the "noaccel" option or "no_bitblt" will probably help.
  766.  
  767.       `Wavy' screen.
  768.         Horizontal waving or jittering of the whole screen, continuously
  769.         (independent from drawing operations).  You are probably using a
  770.         dot clock that is too high; it is also possible that there is
  771.         interference with a close MCLK. Try a lower dot clock. You can also
  772.         try to tweak the mode timings; try increasing the second horizontal
  773.         value somewhat. Here's a 65 MHz dot clock 1024x768 mode (about 60
  774.         Hz) that might help:
  775.  
  776.           "1024x768"     65     1024 1116 1228 1328     768  783  789    818
  777.  
  778.  
  779.         If you are using programmable clocks with Clockchip "cirrus", try
  780.         disabling it and using the default set of clocks.
  781.  
  782.       Crash or hang after start-up (probably with a black screen).
  783.         Try the "noaccel" option. If that works, try Option "no_bitblt" for
  784.         somewhat better performance. Check that the BIOS settings are OK;
  785.         in particular, disable caching of 0xa0000-0xaffff. Disabling hidden
  786.         DRAM refresh may also help.
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  Information for Cirrus Chipset Users
  797.  
  798.  
  799.  
  800.       Crash, hang, or trash on the screen after a graphics operation.
  801.         This may be related to a bug in one of the accelerated functions,
  802.         or a problem with the BitBLT engine. Try the "noaccel" option, or
  803.         the "no_bitblt" option. Also check the BIOS settings.
  804.  
  805.       `Blitter timeout' messages from the server.
  806.         Same as for the above entry.
  807.  
  808.       Screen is `wrapped' vertically. (542x/3x/46)
  809.         This indicates a DRAM configuration problem. If your card has two
  810.         megabytes of memory, try the "no_2mb_banksel" option, or use video-
  811.         ram "1024" if you only use 1 Mbyte for the virtual screen.
  812.  
  813.       Corrupted text in terminal window.
  814.         This has been reported on non-standard video implementations.  Use
  815.         the "no_bitblt" option.
  816.  
  817.       Streaks or hangs with laptop chipset
  818.         This can happen if the dot clock is high enough to leave very lit-
  819.         tle bandwidth for drawing (e.g. 40 MHz on a 512K card), and
  820.         (5422-style) acceleration is used.
  821.  
  822.       Occasional erroneous pixels in text, pixel dust when moving window-frame
  823.         Probably related to MCLK setting that is too high (can happen with
  824.         linear addressing even though banked mode runs OK).
  825.  
  826.       Chipset is not detected.
  827.         Try forcing the chipset to a type that is most similar to what you
  828.         have.
  829.  
  830.       Incorrect little lines (mostly white) appear occasionally
  831.         This may be related to a problem with system-to-video-memory BitBLT
  832.         operations. Try the "no_imageblt" option if it annoys you.
  833.  
  834.       Textmode is not properly restored
  835.         This has been reported on some configurations. In XFree86 3.1 the
  836.         SVGA server probe would corrupt a register on the 543x, requiring a
  837.         Chipset line. Normally you should be able to restore the textmode
  838.         font using a utility that sets it (setfont, runx, restorefont on
  839.         Linux).
  840.  
  841.       Erratic system behaviour at very high dot clocks
  842.         It is possible that high dot clocks on the video card interfere
  843.         with other components in the system (e.g. disk I/O), because of a
  844.         bad card and/or motherboard design. It has been observed on some
  845.         PCI 5428-based cards (which are very rare, since the 5428 chip
  846.         doesn't support PCI).
  847.  
  848. For other screen drawing related problems, try the "noaccel" option (if
  849. "no_bitblt" doesn't help).
  850.  
  851. If are having driver-related problems that are not addressed by this document,
  852. or if you have found bugs in accelerated functions, you can try contacting the
  853. XFree86 team (the current driver maintainer can be reached at
  854.  
  855.  
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.  Information for Cirrus Chipset Users
  863.  
  864.  
  865.  
  866. H.Hanemaayer@inter.nl.net), or post in the Usenet newsgroup "comp.win-
  867. dows.x.i386unix".
  868.  
  869. In fact, reports (success or failure) are very welcome, especially on configu-
  870. rations that have not been tested. You can do this via the BetaReport form
  871. (mail to report@XFree86.org). You may want to keep an eye on forthcoming beta
  872. releases at www.xfree86.org.
  873.  
  874.  
  875. 8.  Tested Configurations
  876.  
  877. For version 3.3, the following configurations have received a certain amount of
  878. testing:
  879.  
  880.       CL-GD5446 with 2MB memory on PCI bus
  881.         Support for dot clocks > 85 MHz has been fixed. At 16bpp, it has
  882.         been reported that some stippled edges of window frames may be cor-
  883.         rupted or show the wrong colors. The option "xaa_no_pixmap_cache"
  884.         eliminates the problem.
  885.  
  886.       CL-GD5464 with 4MB memory on PCI bus
  887.  
  888.       CL-GD7543 on PCI bus
  889.  
  890. This is a list of configurations that has received testing with one or more of
  891. the changes introduced in version XFree86 3.2A. The amount of testing is very
  892. small for some of the configurations, and the summaries may be incomplete. If
  893. you can contribute, please do so. For the latest information check the latest
  894. version of this document on www.xfree86.org.
  895.  
  896.       CL-GD5426 on VL-bus
  897.         This configuration was only tested with an early version of the XAA
  898.         code.
  899.  
  900.       CL-GD5434 with 2MB memory on VL-bus
  901.         MMIO operation is supported. This configuration was only tested
  902.         with an early version of the XAA code.
  903.  
  904.       CL-GD5436 with 2MB memory on PCI-bus
  905.         Works OK. Non-MMIO operation might have problems.
  906.  
  907.       CL-GD5446 with 2MB memory on PCI bus
  908.         Works OK in MMIO mode. 32bpp probably doesn't work. The support for
  909.         dot clocks > 85 MHz at 8bpp may or may not work.
  910.  
  911.       CL-GD5462 with 2MB memory on PCI bus
  912.  
  913.       CL-GD5462 with 4MB memory on PCI bus
  914.  
  915.       CL-GD5464 with 4MB memory on PCI bus
  916.         Works OK at 8bpp, 16bpp, 24bpp and 32bpp.  CL-GD5464 works OK at
  917.         16bpp, -weight 555.
  918.  
  919.  
  920.  
  921.  
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.  Information for Cirrus Chipset Users
  929.  
  930.  
  931.  
  932.       CL-GD7543 on PCI bus
  933.         Works for 8bpp, 16bpp on TFT display (TI TravelMate 5000).
  934.         Although the previous version, 3.2, was reported to broken, on some
  935.         configurations it worked, while others were reported not to work
  936.         correctly. On 800x600 displays, the recommended dot clock is 40 MHz
  937.         for TFT and 33.7 MHz for a DSTN panel, with corresponding horizon-
  938.         tal syncs of 33.7 kHz for TFT and 38.6 kHz for DSTN. However,
  939.         reports indicate that the VESA standard 40 MHz 800x600 timing may
  940.         cause problems. The solution is decrease the fourth horizontal tim-
  941.         ing number or use a dot clock of 36 MHz.
  942.  
  943. Some configurations for which no up-to-date testing data is available:
  944.  
  945.       CL-GD5429 on VL-bus
  946.         BitBLT operation should be fixed in 3.2. MMIO does not work, but
  947.         not tested with with 3.2 or 3.2A.
  948.  
  949.       CL-GD5430 on PCI-bus
  950.         Works OK. 24bpp was broken, but should be fixed in later versions
  951.         (3.2A).
  952.  
  953.       CL-GD5430, and CL-GD5436 and CL-GD5446 with 1MB memory
  954.         It would be nice to know whether these chips needs the same treat-
  955.         ment at 16bpp as the CL-GD5434 with 1MB memory does.
  956.  
  957.       CL-GD5434 with 1MB memory on PCI bus
  958.         8bpp, 16pp and 24bpp work OK. 16bpp no longer has "static" prob-
  959.         lems. MMIO operation is supported.
  960.  
  961.       CL-GD5436 and CL-GD5446 with 1MB memory
  962.         In particular the FIFO settings for this configuration are uncer-
  963.         tain.
  964.  
  965.       CL-GD7541
  966.  
  967.       CL-GD7548
  968.         Should be compatible with 7543, but untested. Reports indicate that
  969.         it worked with 3.2, and there's no reason why it shouldn't work
  970.         with 3.2A.
  971.  
  972.  
  973. 9.  Driver Changes
  974.  
  975. Changes since XFree86 3.2A:
  976.  
  977.    o A bug that caused a server crash with memory-mapped I/O operation on some
  978.      chips has been fixed.
  979.  
  980.    o Correct handling of dot clocks > 85 MHz on the 5436 and 5446.
  981.  
  982.    o Preliminary support for the CL-GD7555 (no detection yet).
  983.  
  984.    o Support has been added for the CL-GD5480 and CL-GD5465.
  985.  
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.  Information for Cirrus Chipset Users
  995.  
  996.  
  997.  
  998.    o 32bpp mode has been fixed on some Alpine family chips.
  999.  
  1000.    o Support for dot clocks up to 230 MHz has been added for Laguna family
  1001.      chips.
  1002.  
  1003. Changes since XFree86 3.2:
  1004.  
  1005.    o Enhanced acceleration using XAA on all chips with a BitBLT engine.
  1006.  
  1007.    o Enhanced acceleration using XAA for the Laguna series (546x).
  1008.  
  1009.    o 24bpp mode on 5430 is fixed.
  1010.  
  1011.    o Improved support for 754x, including support for LCD stretching/centering.
  1012.  
  1013.      Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/cirrus.sgml,v 3.23.2.1 1997/05/24 08:36:08 dawes Exp $
  1014.  
  1015.  
  1016.  
  1017.  
  1018.  
  1019.      $XConsortium: cirrus.sgml /main/12 1996/10/28 05:43:32 kaleb $
  1020.  
  1021.  
  1022.  
  1023.  
  1024.  
  1025.  
  1026.  
  1027.  
  1028.  
  1029.  
  1030.  
  1031.  
  1032.  
  1033.  
  1034.  
  1035.  
  1036.  
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.  Information for Cirrus Chipset Users
  1061.  
  1062.  
  1063.  
  1064.  
  1065.  
  1066.  
  1067.  
  1068.  
  1069.  
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.                    CONTENTS
  1131.  
  1132.  
  1133.  
  1134. 1. Supported chipsets  ...................................................... 1
  1135.  
  1136. 2. Basic configuration    ..................................................... 4
  1137.  
  1138. 3. XF86Config options  ...................................................... 5
  1139.  
  1140. 4. Mode issues    ............................................................. 8
  1141.  
  1142. 5. Linear addressing and 16bpp/24bpp/32bpp modes  ........................... 8
  1143.  
  1144. 6. The ``cl64xx'' Driver ................................................... 11
  1145.  
  1146. 7. Trouble shooting with the ``cirrus'' driver ............................. 12
  1147.  
  1148. 8. Tested Configurations  .................................................. 14
  1149.  
  1150. 9. Driver Changes  ......................................................... 15
  1151.  
  1152.  
  1153.  
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.                        i
  1187.  
  1188.  
  1189.